import logging
import os
from datetime import datetime

class Log:
    def __init__(self):
        # 创建一个Info级别的日志对象

        # 使用__name__确保每个模块有独立的日志对象
        self.logger = logging.getLogger(__name__)

        # 总级别
        self.logger.setLevel(logging.DEBUG)

        # 创建日志记录器环境
        formatter = logging.Formatter("%(asctime)s ->%(message)s ->%(filename)s ->%(levelname)s ->%(lineno)d")

        # 确保日志目录存在
        log_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'logs')
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)

        # 获取当前日期
        rq = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')

        fhandler = logging.FileHandler(os.path.join(log_dir, '%s.log' % rq), mode='a+', encoding='utf-8')

        # 日志文件的级别
        fhandler.setLevel(logging.DEBUG)
        fhandler.setFormatter(formatter)

        # 控制流处理器
        shandler = logging.StreamHandler()
        shandler.setFormatter(formatter)
        shandler.setLevel(logging.DEBUG)

        # 防止重复添加处理器
        if not self.logger.handlers:
            self.logger.addHandler(fhandler)
            self.logger.addHandler(shandler)

    def get_logger(self):
        return self.logger

# 示例用法
if __name__ == "__main__":
    log = Log().get_logger()
    log.info("这是一个测试日志信息")